package com.kkkk.rest.common.util;

import com.github.pagehelper.PageInfo;
import com.kkkk.rest.common.resp.PageResponse;
import com.mybatisflex.core.paginate.Page;

import java.util.ArrayList;
import java.util.List;

public class PageInfoUtils {

//    public static final PageInfo EMPTY_PAGE = new PageInfo(new ArrayList());

//    public static final PageResponse EMPTY_PAGE_RESPONSE = toPageResponse(EMPTY_PAGE);
//
//    public static void copyPageInfo(PageInfo src, PageInfo targer) {
//        targer.setTotal(src.getTotal());
//        targer.setPageSize(src.getPageSize());
//        targer.setPages(src.getPages());
//        targer.setPageNum(src.getPageNum());
//        targer.setIsLastPage(src.isIsLastPage());
//        targer.setHasNextPage(src.isHasNextPage());
//    }
    public static <T> List<T> getPageData(List<T> list, int pageNum, int pageSize) {
        // 计算起始索引和结束索引
        int startIndex = (pageNum - 1) * pageSize;
        int endIndex = Math.min(startIndex + pageSize, list.size());

        // 检查索引范围，避免越界
        if (startIndex >= list.size()) {
            return new ArrayList<>();  // 返回空列表表示页码超出范围
        }

        // 截取数据
        return list.subList(startIndex, endIndex);
    }
//    public static PageResponse toPageResponse(PageInfo src) {
//        if (src == null) {
//            return new PageResponse(new ArrayList(), 1, 10, 0);
//        }
//        PageResponse pageResponse = new PageResponse<>();
//
//        pageResponse.setData(src.getList());
//        pageResponse.setPage(src.getPageNum());
//        pageResponse.setPageSize(src.getPageSize());
//
//        pageResponse.setTotal(src.getTotal());
//
//        return pageResponse;
//    }

    public static PageResponse toPageResponse(Page src) {
        if (src == null) {
            return new PageResponse(new ArrayList(), 1, 10, 0);
        }
        PageResponse pageResponse = new PageResponse<>();

        pageResponse.setData(src.getRecords());
        pageResponse.setPage(Long.valueOf(src.getPageNumber()).intValue());
        pageResponse.setPageSize(Long.valueOf(src.getPageSize()).intValue());

        pageResponse.setTotal(src.getTotalRow());

        return pageResponse;
    }
}
